
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;


public class MapExample {
	
	public static void main(String[] args) {

		BufferedReader reader = null;
		Map words = new TreeMap();

		try {
			reader = new BufferedReader(new FileReader(args[0]));

			String line = reader.readLine();
			while (line != null) {
				StringTokenizer tokenizer = 
						new StringTokenizer(line, " \t\n\r\f.,");

				while (tokenizer.hasMoreTokens()) {
					String word = tokenizer.nextToken();
					
					if (words.containsKey(word)) {
						Integer count = (Integer)words.get(word);
						int newCount = count.intValue()+1;
						words.put(word, new Integer(newCount));
					}
					else {
						words.put(word, new Integer(1));
					}
				}

				line = reader.readLine();
			}

		}
		catch (IOException e) {
			System.out.println(e.getMessage());
		}
		finally  {
			if (reader != null) {
				try { reader.close(); } catch (IOException e) {}
			}
		}

		BufferedReader input =
				new BufferedReader(new InputStreamReader(System.in));
		
		boolean done = false;
		while (!done) {
			System.out.print("\n? ");
			
			String word = null;
			try { word = input.readLine(); }
			catch (IOException e) { return; }

			if (word.equals("exit" )) {
				done = true;
			}
			else {
				Integer count = (Integer)words.get(word);
				if (count != null) {
					System.out.println(word + " appears " + count + " times");
				}
				else {
					System.out.println(word + " appears 0 times");
				}
			}
		}
	}
}
